package com.payment.paymentmanagersystem.idal;

import com.payment.paymentmanagersystem.model.PayOrderInfo;
import com.payment.paymentmanagersystem.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.mapping.StatementType;
import org.springframework.stereotype.Component;

/**
 * 接口模块：支付模块
 *
 * @author 李耀华
 * 2023年4月7日
 *
 */

@Mapper
@Component
public interface IPaymentDAL {
    /**
     * 支付功能01
     * 用户与用户之间交易支付
     * 调用存储过程
     * @返回值 error,如果值=0，则说明运行成功，不为0则运行失败
     */
    @Select("CALL zf_createOrder(#{order_payee},#{order_payer},#{order_type},#{order_paymentmethod},#{order_collection},#{order_payMoney},#{order_remark})")
    @Options(statementType = StatementType.CALLABLE)
    public Integer orderUserPaymentToPayee(PayOrderInfo order);

    /**
     * 支付功能02
     * 用户与商家之间交易支付
     * @OrderInfo
     */
    public boolean orderUserPaymentToMerchant(PayOrderInfo order);

    /**
     * 支付模块创建支付订单存储过程
     * 调用存储过程
     * @返回值 error,如果值=0，则说明运行成功，不为0则运行失败
     *  function fct(arg1,arg2)
     */
    @Select("CALL zf_createOrder(#{order_payee},#{order_payer},#{order_type},#{order_paymentmethod},#{order_collection},#{order_payMoney},#{order_remark})")
    @Options(statementType = StatementType.CALLABLE)
    public Integer createPayOrder(PayOrderInfo order);

    /**
     * 验证付款账户余额
     *
     */
    @Select("select blance from zf_usertb where user_id=#{order_payer}")
    public UserInfo getBlanceByUserId(PayOrderInfo order);


}
